Hereinafter, a “transaction” refers to a data transaction. A transaction can be a data request message formed according to some specification, a response message formed according to some specification and containing data, or generally a data communication occurring over a data network between two data processing systems at least one of which is operating in a cloud computing environment.
Cloud computing is a model of service delivery for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g. networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with a provider of the service.
A cloud computing environment is service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure comprising a network of interconnected nodes. A cloud model may further include any of the at least four deployment models, which are as follows:
Private cloud: the cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on-premises or off-premises.
Community cloud: the cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on-premises or off-premises.
Public cloud: the cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
Hybrid cloud: the cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).
A system inside the cloud can request a service from another system inside the same cloud. A system inside the cloud can request a service from another system inside a different cloud. A system outside a cloud can request a service from another system inside a cloud.
The request for a service—including but not limited to from a cloud-based system—is generally formed and communicated according to REpresentational State Transfer (REST) architecture. An Application Programming Interface (API) can be RESTful, i.e., compliant with the requirements of REST architecture. An interface is referred to as RESTful if—
(i) Client-server: the interface is implemented in a client-server architecture of a service-provider system (provider or server) and a service-requestor system (requestor or client);
(ii) Stateless: a transaction occurring in the architecture is stateless—i.e., every request to or from a system in the architecture contains all information necessary to understand the request and does not rely on any stored information on a destination system. Any session state information if maintained is maintained on the system originating the request;
(iii) Cacheable—in the architecture, the data within a response to a request is implicitly or explicitly labeled as cacheable or non-cacheable. If a response is cacheable, then a client cache is given the right to reuse that response data for later, equivalent requests;
(iv) Uniform interface—the software engineering principle of generality is applied to the interfaces, thereby simplifying the overall system architecture and improving the visibility of interactions. In order to obtain a uniform interface, multiple architectural constraints are needed to guide the behavior of components. REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; self-descriptive messages; and, hypermedia as the engine of application state. Hypertext (or hypermedia) mean the simultaneous presentation of information and controls such that the information becomes the affordance through which the user (or automaton) obtains choices and selects actions. Hypertext does not need to be HTML (or XML or JSON) on a browser. Machines can follow links when they understand the data format and relationship types.
(v) Layered system—The architecture is implemented in a layered system style composed of hierarchical layers by constraining component behavior such that each component cannot “see” beyond the immediate layer with which they are interacting; and
(vi) Code on demand (optional)—client functionality is extensible by downloading and executing code in the form of applets or scripts, thereby simplifying the clients by reducing the number of features that have to be pre-implemented.
A REST transaction is a transaction that occurs using a RESTful interface.